package com.fast.utils.service;

import com.github.pagehelper.PageInfo;
import tk.mybatis.mapper.entity.Example;

import java.util.List;

/**
 * Created by xiehaitao on 2017/9/5.
 */
public interface BaseService<T> {


    /**
     * 根据id查询数据
     *
     * @param id
     * @return
     */
    public T queryById(Integer id);

    /**
     * 查询所有数据
     *
     * @return
     */
    public List<T> queryAll();

    /**
     * 根据条件查询一条数据，如果数据有多条，会抛出异常
     *
     * @param record
     * @return
     */
    public T queryOne(T record);

    /**
     * 根据条件查询数据列表
     *
     * @param record
     * @return
     */
    public List<T> queryListByWhere(T record);

    /**
     * 根据条件分页查询数据列表
     *
     * @param page
     * @param rows
     * @param record
     * @return
     */
    public PageInfo<T> queryPageListByWhere(Integer page, Integer rows, T record);

    /**
     * 新增数据
     *
     * @param record
     * @return
     */
    public Integer save(T record);

    /**
     * 选择不为null的属性作为插入数据的字段，新增数据
     *
     * @param record
     * @return
     */
    public Integer saveSelective(T record);

    /**
     * 更新数据
     *
     * @param record
     * @return
     */
    public Integer update(T record);

    /**
     * 选择不为null的属性作为更新数据的字段
     *
     * @param record
     * @return
     */
    public Integer updateSelective(T record);

    /**
     * 根据id删除数据
     *
     * @param id
     * @return
     */
    public Integer deleteById(Integer id);

    /**
     * 批量删除数据
     *
     * @param ids
     * @return
     */
    public Integer deleteByIds(List<Object> ids, String property, Class<T> clazz);

    /**
     * 根据条件删除数据
     *
     * @param record
     * @return
     */
    public Integer deleteByWhere(T record);



}
